iT邦幫忙

1

[系統設計]- 容易產生設計盲點

  • 分享至 

  • xImage
  •  

正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (Never shoot for the best architecture, but rather the least worst architecture)。
other blog: https://xiang753017.gitbook.io/zixiang-blog/xi-tong-she-ji-rong-yi-chan-sheng-she-ji-mang-dian

錯誤:用越多 Pattern 就越猛

正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (Never shoot for the best architecture, but rather the least worst architecture)。
在工作上時常會遇到 JR. 工程師剛上工就想要導入各種系統設計,但往往都無法被接受。原因通常不外乎是沒有延續本來系統的架構為理由,缺乏一制性等等。
要避免這種狀況,會有三個考慮的準則:

  1. 對於實際 feature 無關的考量特徵:
    指一些明確的設計特徵,像是 “效能,擴充性...” ,且通常會載明載 Spec 中
  2. 會直接影響到系統架構的考量特徵:
    指的是一些隱含式考量特徵,但這些不一定會被載明 spec 中,像是 安全性
  3. 達成系統運行
    這一類型是實際撰寫系統採用的設計,但原則上架構越簡單越好,只包含必要的架構

實際操作的時候,應該參考下列流程:
Read Requirements -> Extract needs characteristics -> pick must do characteristics

  • Read Requirements
    閱讀 Feature Requirements(實際商業需求) / non-feature (實際技術需求) 的需求,也或許可以產出隱含的需求。
    ex: non-feature 需求是像是 performance 等, 隱含需求像是 security 等等的
  • Extract needs characteristics
    除了要達到商業的目的之外,以及明確的需求之外,隱含的需求未必都要實作
  • pick must do characteristics
    常用的系統Characteristics 如下
System Domain Concern Architecture characteristics
Mergers and acquisitions Interoperability, scalability, adaptability, extensibility
Time to market Agility, testability, deployability
User satisfaction Performance, availability, fault tolerance, testability, deployability, agility, security
Competitive advantage Agility, testability, deployability, scalability, availability, fault tolerance
Time and budget Simplicity, feasibility

Reference

[1] Fundamentals of Software Architecture: An Engineering Approach, Mark Richards & Neal Ford


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

2
fridaynight
iT邦新手 5 級 ‧ 2024-10-28 13:00:10

謝謝分享

我要留言

立即登入留言